//配置store模块
//导入vuex模块
import Vue from 'vue';
import Vuex from 'vuex';
//提前在store中使用 因为在main中使用会先导入store后use(vuex) 导致解析不了store从而报错
Vue.use(Vuex);

//创建store中的actions
const actions = {
    //写方法 (带一些逻辑的操作) (上下文对象,传进来的数据)
    addOdd(context, value) {
        if (context.state.sum % 2) {
            //直接commit调mutation中的方法
            context.commit('ADD', value);
        }
    },
    addWait(context, value) {
        setTimeout(() => {
            //直接commit调mutation中的方法
            context.commit('ADD', value);
        }, 500)
    },

};
//创建vuex中的mutations
const mutations = {
    //写方法(不带一些逻辑 简单粗暴的逻辑)
    //第一个参数state对象 第二个参数传过来的数据 一般在mutations中的方法都是大写并且都是一些简单粗暴的操作 没有逻辑
    ADD(state, value) {
        state.sum += value;
    },
    SUB(state, value) {
        state.sum -= value;
    },
    ADD_PERSON(state,value) {
        state.persons.unshift(value);
    }
};
//创建vuex中的state
const state = {
    //写入数据
    sum: 0,
    school:'尚硅谷',
    subject:'前端',
    persons:[{id:'001',name:'张三'}]
};
//对state中的数据进行加工
const getters = {
    // 写一个方法用来放大数字
    bigNum(state) {
        return state.sum * 10;
    }
}
//创建并暴露store
export default new Vuex.Store({
    //传入的参数是创建的三个对象
    actions,
    mutations,
    state,
    //配置getters
    getters
})



